/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ventas.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.ventas.bean.*;
import com.ventas.dao.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;

/**
 *
 * @author MilerIvan
 */
public class ventasAction extends ActionSupport{
    
    private List<Cliente> listadoClientes = null;    
    private List<Producto> listadoProducto=null;
    private List<DetalleVenta> lstDetalleVenta=null;
    private int pro_id;
    private String pro_nombre;
    
    private  Double venDet_preVenta;
    private  int venDet_cantidad;
    
    public String cargaVentas() throws Exception {
       
        try {            
            System.out.println("Exito cargaSelectMarcasAction");
            ListadoClientes();
            ListadoProductos();
        } catch (Exception e) {
            System.out.println("Error cargaSelectMarcasAction" + e.getMessage());
            e.printStackTrace();
        }
        return SUCCESS;
    }
    
    public String ListadoClientes() throws Exception {       
        listadoClientes= new ArrayList<>(); 
        try {
            ClienteDao clienteDao = new ClienteDao();            
            listadoClientes=clienteDao.listadoClienteActivos();            
            System.out.println("Exito ");
        } catch (Exception e) {
            System.out.println("Error de Action" + e.getMessage());
            e.printStackTrace();
        }
        if (listadoClientes.isEmpty()) {
            return ERROR;
        } else {
            return SUCCESS;
        }
    }
    
    public String ListadoProductos() throws Exception {       
        listadoProducto= new ArrayList<>(); 
        try {
            ProductoDao productoDao = new ProductoDao();            
            listadoProducto=productoDao.listadoProductosActivos();            
            System.out.println("Exito ");
        } catch (Exception e) {
            System.out.println("Error de Action" + e.getMessage());
            e.printStackTrace();
        }
        if (listadoProducto.isEmpty()) {
            return ERROR;
        } else {
            return SUCCESS;
        }
    }
    
    public String BuscarPrecioProducto() throws IOException {
   
        Double v = 0.0;
        try {
            ProductoDao d = new ProductoDao();
            List<Producto> lst = d.listadoProductosActivos();
            for (int i = 0; i < lst.size(); i++) {
                if(pro_id==lst.get(i).getPro_id()){
                    v =lst.get(i).getPro_precio();
                    
                    break;
                }System.out.println("Recorriendo");
            }
        } catch (Exception e) {
            System.out.println("Error de busqueda precios" + e.getMessage());
        }
        
        HttpServletResponse res = ServletActionContext.getResponse();
        PrintWriter pwr = res.getWriter();
        pwr.println("{ \"pro_precio\": \""+v+"\" }");
        pwr.flush();
        return SUCCESS;
    }
    
    public String LlenarDetalle() throws IOException {

        lstDetalleVenta = new ArrayList<DetalleVenta>();
        Map sesion = ActionContext.getContext().getSession();

        if (sesion.get("detalle") == null) {
            DetalleVenta d = new DetalleVenta();
                Producto producto = new Producto();
                producto.setPro_id(pro_id);
                producto.setPro_nombre(pro_nombre);

            d.setProducto(producto);
            d.setVenDet_cantidad(venDet_cantidad);
            d.setVenDet_preVenta(venDet_preVenta);
            d.setImporte(venDet_preVenta * venDet_cantidad);
           lstDetalleVenta.add(d);

        } else {

            lstDetalleVenta = (List<DetalleVenta>) sesion.get("detalle");
            
            DetalleVenta d = new DetalleVenta();
                Producto producto = new Producto();
                producto.setPro_id(pro_id);
                producto.setPro_nombre(pro_nombre);

            d.setProducto(producto);
            d.setVenDet_cantidad(venDet_cantidad);
            d.setVenDet_preVenta(venDet_preVenta);
            d.setImporte(venDet_preVenta * venDet_cantidad);
           lstDetalleVenta.add(d);

        }
        String t = "";
        Double tot=0.0;
        for (int i = 0; i < lstDetalleVenta.size(); i++) {
            t += "<tr>";
                t += "<td>" + (i + 1) + "</td>";
                t += "<td>" + lstDetalleVenta.get(i).getProducto().getPro_nombre()+ "</td>";
                t += "<td>" + lstDetalleVenta.get(i).getVenDet_preVenta()+ "</td>";
                t += "<td>" + lstDetalleVenta.get(i).getVenDet_cantidad()+ "</td>";
                t += "<td>" + lstDetalleVenta.get(i).getImporte()+ "</td>";
            t += "</tr>";
            tot = tot+lstDetalleVenta.get(i).getImporte();
           
        }
       t+="<tr><td colspan='4'>Total : S/. "+tot+"<td></tr>";
        
        Map<String, Object> sesionDetCompra = ActionContext.getContext().getSession();
        sesionDetCompra.put("detalle", lstDetalleVenta);

        HttpServletResponse res = ServletActionContext.getResponse();
        PrintWriter pwr = res.getWriter();
        pwr.println(t);
        pwr.flush();
        return SUCCESS;

    }

    public List<Cliente> getListadoClientes() {
        return listadoClientes;
    }

    public void setListadoClientes(List<Cliente> listadoClientes) {
        this.listadoClientes = listadoClientes;
    }

    public List<Producto> getListadoProducto() {
        return listadoProducto;
    }

    public void setListadoProducto(List<Producto> listadoProducto) {
        this.listadoProducto = listadoProducto;
    }

    public int getPro_id() {
        return pro_id;
    }

    public void setPro_id(int pro_id) {
        this.pro_id = pro_id;
    }
    
    
    
    
    
    
}
